package idp

// HandsUpMsgForVi 举手的消息结构体
type HandsUpMsgForVi struct {
	Md5             string `json:"md5,omitempty"`             // 主程序MD5
	BiosSerial      string `json:"biosSerial"`                // bios序列号
	MainBoardSerial string `json:"mainBoardSerial,omitempty"` // 主板序列号，只考虑基板
	HardDiskSerial  string `json:"hardDiskSerial,omitempty"`  // 硬盘序列号，只考虑第一块硬盘，且需要过滤掉USB接口的移动硬盘
	ActiveMAC       string `json:"activeMAC,omitempty"`       // 活跃网卡
	IP              string `json:"ip,omitempty"`              // IP
	Hostname        string `json:"hostname,omitempty"`
}

type CpuMsg struct {
	Threshold  float64 `json:"threshold,omitempty"`  //阈值
	Sample     float64 `json:"sample,omitempty"`     // 采样值
	SampleTime int     `json:"sampleTime,omitempty"` // 采样时间
}

type MemoryMsg struct {
	Threshold float64 `json:"threshold,omitempty"` //阈值
	Sample    float64 `json:"sample,omitempty"`    // 采样值
}

type WinSessionChangeMsg struct {
	SessionId int    `json:"sessionId,omitempty"` // 会话ID
	Username  string `json:"username,omitempty"`  // win账户
	WtsCode   int    `json:"wtsCode,omitempty"`   // 会话状态变化时的code
	Describe  string `json:"describe,omitempty"`  // code对应的中文含义
}

type ResultMsg struct {
	MsgType string `json:"msgType,omitempty"`
	Result  string `json:"result,omitempty"`
}

// //////////////// cli-结构体 //////////////////////////

type RCpu []struct {
	Description               string `json:"Name"`
	CurrentClockSpeed         int    `json:"CurrentClockSpeed"`
	DataWidth                 int    `json:"DataWidth"`
	DeviceID                  string `json:"DeviceID"`
	Family                    int    `json:"Family"`
	L2CacheSize               int    `json:"L2CacheSize"`
	L3CacheSize               int    `json:"L3CacheSize"`
	Manufacturer              string `json:"Manufacturer"`
	MaxClockSpeed             int    `json:"MaxClockSpeed"`
	Name                      string `json:"Name"`
	NumberOfCores             int    `json:"NumberOfCores"`
	NumberOfLogicalProcessors int    `json:"NumberOfLogicalProcessors"`
	ProcessorID               string `json:"ProcessorId"`
	SystemName                string `json:"SystemName"`
}
type RMemory []struct {
	Capacity             int64  `json:"Capacity"`
	Description          string `json:"Name"`
	ConfiguredClockSpeed int    `json:"ConfiguredClockSpeed"`
	ConfiguredVoltage    int    `json:"ConfiguredVoltage"`
	DataWidth            int    `json:"DataWidth"`
	Manufacturer         string `json:"Manufacturer"`
	MaxVoltage           int    `json:"MaxVoltage"`
	MinVoltage           int    `json:"MinVoltage"`
	Model                string `json:"Model"`
	PartNumber           string `json:"PartNumber"`
	SerialNumber         string `json:"SerialNumber"`
	SKU                  string `json:"SKU"`
	Speed                int    `json:"Speed"`
	Tag                  string `json:"Tag"`
}

type RPhysicsDisk []struct {
	BytesPerSector   int    `json:"BytesPerSector"`
	Caption          string `json:"Caption"`
	Description      string `json:"Name"`
	DeviceID         string `json:"DeviceID"`
	FirmwareRevision string `json:"FirmwareRevision"`
	InterfaceType    string `json:"InterfaceType"`
	Manufacturer     string `json:"Manufacturer"`
	MediaType        string `json:"MediaType"`
	Model            string `json:"Model"`
	Name             string `json:"Name"`
	SerialNumber     string `json:"SerialNumber"`
	Size             int64  `json:"Size"`
	SystemName       string `json:"SystemName"`
}

type RLogicDisk []struct {
	Caption            string `json:"Caption"`
	Description        string `json:"Name"`
	DeviceID           string `json:"DeviceID"`
	DriveType          int    `json:"DriveType"`
	FileSystem         string `json:"FileSystem"`
	FreeSpace          int64  `json:"FreeSpace"`
	Size               string `json:"Size"`
	SupportsDiskQuotas bool   `json:"SupportsDiskQuotas"`
	VolumeName         string `json:"VolumeName"`
	VolumeSerialNumber string `json:"VolumeSerialNumber"`
}
type RMainBoard []struct {
	Description          string `json:"Name"`
	HostingBoard         bool   `json:"HostingBoard"`
	HotSwappable         bool   `json:"HotSwappable"`
	Manufacturer         string `json:"Manufacturer"`
	Model                string `json:"Model"`
	Name                 string `json:"Name"`
	OtherIdentifyingInfo string `json:"OtherIdentifyingInfo"`
	Product              string `json:"Product"`
	SerialNumber         string `json:"SerialNumber"`
	Tag                  string `json:"Tag"`
	Version              string `json:"Version"`
}

type RBios []struct {
	SerialNumber string `json:"SerialNumber"`
	Manufacturer string `json:"Manufacturer"`
}

type RBoardBase struct {
	BoardSerialNumber string `json:"boardSerialNumber"`
	BoardManufacturer string `json:"boardManufacturer"`
	BoardProduct      string `json:"boardProduct"`
	BiosSerialNumber  string `json:"biosSerialNumber"`
	BiosManufacturer  string `json:"biosManufacturer"`
}

type RBoardBaseSerial struct {
	BoardSerial string `json:"boardSerial"`
	BioSerial   string `json:"bioSerial"`
}
type RSysAbstract struct {
	OS             string `json:"OS"`
	Hostname       string `json:"Hostname"`
	KernelArch     string `json:"KernelArch"`
	KernelVersion  string `json:"KernelVersion"`
	Manufacturer   string `json:"Manufacturer"`
	Model          string `json:"Model"`
	Name           string `json:"Name"`
	PartOfDomain   bool   `json:"PartOfDomain"`
	SystemType     string `json:"SystemType"`
	UserName       string `json:"UserName"`
	BuildNumber    string `json:"BuildNumber"`
	Caption        string `json:"Caption"`
	CSName         string `json:"CSName"`
	Description    string `json:"Name"`
	Distributed    bool   `json:"Distributed"`
	OSArchitecture string `json:"OSArchitecture"`
	Primary        bool   `json:"Primary"`
	SerialNumber   string `json:"SerialNumber"`
	SystemDrive    string `json:"SystemDrive"`
	Version        string `json:"Version"`
}

type RApps []struct {
	DisplayName     string `json:"displayName,omitempty"`
	DisplayVersion  string `json:"displayVersion,omitempty"`
	InstallLocation string `json:"installLocation,omitempty"`
	Publisher       string `json:"publisher,omitempty"`
	InstallDate     string `json:"installDate,omitempty"`
}
type RProcess struct {
	TaskId  int64  `json:"taskId,string"`
	Name    string `json:"name"`
	Path    string `json:"path"`
	IsExist bool   `json:"isExist"`
	Num     int    `json:"num"`
}

type RFile struct {
	TaskId   int64  `json:"taskId,string"`
	FileSize int64  `json:"fileSize,string"`
	Md5      string `json:"md5"`
	FilePath string `json:"filePath"`
	IsExist  bool   `json:"isExist"`
}
